package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.entity.SpecialCargoCasDO;
import com.cmc.cloud.cmclink.doc.vo.specialcargocasvo.CasCreateOrUpdateVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargocasvo.SpecialCargoCasBaseVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargocasvo.SpecialCargoCasRespVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargocasvo.SpecialCargoCasUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 特种货申请dg下cas信息 Convert
 *
 * @author 集运管理员
 */
@Mapper
public interface SpecialCargoCasConvert {

    SpecialCargoCasConvert INSTANCE = Mappers.getMapper(SpecialCargoCasConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoCasDO
     */
    SpecialCargoCasDO convert(SpecialCargoCasBaseVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoCasDO
     */
    SpecialCargoCasDO convert(CasCreateOrUpdateVO bean);

    /**
     * 属性转换 convertDoList
     *
     * @param bean voList
     * @return List
     */
    List<SpecialCargoCasDO> convertDoList(List<CasCreateOrUpdateVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoCasDO
     */
    SpecialCargoCasDO convert(SpecialCargoCasUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SpecialCargoCasRespVO
     */
    SpecialCargoCasRespVO convert(SpecialCargoCasDO bean);

    /**
     * 属性转换 convert
     *
     * @param list list
     * @return List<SpecialCargoCasRespVO>
     */
    List<SpecialCargoCasRespVO> convertList(List<SpecialCargoCasDO> list);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param cas cas
     * @return SpecialCargoCasDO
     */
    SpecialCargoCasDO convertApi(com.cmc.cloud.cmclink.doc.api.document.req.so.CasCreateOrUpdateVO cas);

    /**
     * 属性转换
     *
     * @param specialCargoCasDoList list
     * @return list
     */
    List<com.cmc.cloud.cmclink.doc.api.document.req.so.CasCreateOrUpdateVO> convertCasCreateOrUpdateVo(List<SpecialCargoCasDO> specialCargoCasDoList);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param specialCargoCasDoList list
     * @return list
     */
    List<CasCreateOrUpdateVO> convertDo2CasVo(List<SpecialCargoCasDO> specialCargoCasDoList);

    /**
     * 将DO列表转换为查询响应VO列表
     *
     * @param specialCargoCasDoList list
     * @return list
     */
    List<CasCreateOrUpdateVO> convertApi2SpcCasVo(List<com.cmc.cloud.cmclink.doc.api.document.req.so.CasCreateOrUpdateVO> specialCargoCasDoList);
}
